package net.xo68.destiny.core.jwt;

import io.jsonwebtoken.ExpiredJwtException;
import io.jsonwebtoken.MalformedJwtException;
import io.jsonwebtoken.SignatureException;
import io.jsonwebtoken.UnsupportedJwtException;

import java.util.Map;

/**
 * jwt模板接口
 * @author wuxie
 * @version 2020-11-7
 */
public interface IJwtTokenTemplate {

    String generateToken(String sub,String aud, long expireSecond);

    /**
     * 生成令牌
     * @param jtl 编号
     * @param sub 主题
     * @param aud 受众
     * @param expireSecond 过期秒数
     * @return
     */
    String generateToken(String jtl,String sub,String aud, long expireSecond);

    String generateToken(String sub,String aud, Map<String, Object> claims, long expireSecond);

    /**
     * 生成令牌
     * @param jtl 编号
     * @param sub 主题
     * @param aud 受众
     * @param claims 请求权
     * @param expireSecond 过期秒数
     * @return
     */
    String generateToken(String jtl,String sub,String aud, Map<String, Object> claims, long expireSecond);

    /**
     * 解析令牌
     * @param token
     * @return
     */
    JwtTokenParser parse(String token) throws ExpiredJwtException, UnsupportedJwtException, MalformedJwtException, SignatureException, IllegalArgumentException;
}
